package single;

/**
 * @Author 小闽
 * @Date 2024/9/9 14:51
 * @PackageName: single
 * @ClassName: SingleTon01
 * @Description: 单例饿汉式
 * @Version 1.0
 */
public class SingleTon01 {
    public static void main(String[] args) {
       GirlFriend instance = GirlFriend.getInstance();
        System.out.println(instance);
        GirlFriend instance1 = GirlFriend.getInstance();
        System.out.println(instance1);
        System.out.println(instance == instance1);
        // 饿汉式，即访问GirFriend类的n1属性，类GirFriend就会加载。即对象就会创建
        System.out.println(GirlFriend.n1);
    }
}

class GirlFriend{
    //  姓名
    private String name;
    public  static int n1 = 200;
    // 实例一个静态私有的对象,为了能够在静态方法中返回girFriend，需要使用static修饰。
    // 如何保证能够创建一个GirFriend对象
    // 步骤
    //1、构造器私有化 =》防止直接new
    //2、类的内部创建对象（该对象是static）
    //3、向外暴露一个静态的公共方法。GetInstance
    // 对象通常是重量级的的对象，但是对于饿汉式模式来说，虽然创建了对象，但是并没有使用它，就会导致
    // 占用系统内部资源。
    private static GirlFriend girlFriend = new GirlFriend("小花");
    // 静态方法
    public static GirlFriend getInstance(){
        return girlFriend;
    }
    /**
     * 构造器
     * @param name
     */
    private GirlFriend(String name) {
        System.out.println("构造器被调用...");
        this.name = name;
    }
    /**
     * toString()方法
     */
    @Override
    public String toString() {
        return "GirlFriend{" +
                "name='" + name + '\'' +
                '}';
    }
}